With increase in processing capabilities of embedded processors over the years, the functionality of embedded systems is getting increasingly complex. Often audio/video data originating from one or more devices need to be processed differently by different application programs. Similarly, the audio/video data produced by different application programs need to be played out/rendered on one or more output devices.
For example, the application programs may need to transform input audio/video data coming from one device (e.g., a camera, a personal computer (PC), a microphone and the like) in multiple ways. For example, a video captured from a single high definition camera might have to undergo a low bit rate and low frame rate encoding for a live streaming application and a high bit rate high frame rate encoding for a recording application. Also, data captured from a network socket might need to be processed by different application programs in different ways. For example, a recorder and a transcoder working on single input stream.
Further, the application programs may need to render/play out video/audio data coming from multiple devices on to a single output device (for example, a liquid crystal display (LCD) device, a personal computer (PC), a speaker, and so on). For example, a video communication application requiring displaying video of all attendees in a multiparty video conference on a single monitor. At the same time, a media player application may have to render presentation content onto same output device. Furthermore, the application programs may need to encode and stream multiple streams of input data. For example, a video surveillance system capturing from an array of cameras, encoding and streaming all input video streams over a network.
Even though the newer processors are capable of processing multiple streams of audio/video data, the number of pins available for audio/video data communication with other devices (e.g., cameras, display controllers and so on) can be a significant constraint as well. This may result in only a single data channel being available for the processor for communicating multiple streams of audio/video data with external devices (e.g., monitors, speakers and so on). In most of these cases, audio/video data corresponding to different channels would have to go through the same set of pins in the processor using time or space division multiplexing schemes.
In addition, majority of existing audio and video device drivers which drive the external device support only one user. They assume single stream of data communication through the data channel. However, they may be ignorant of the underlying data. Most of the existing embedded application programs interact directly with these device drivers to transfer single stream of data through the device data channel (DDC).
Moreover, it can be difficult to manage a single DDC when more than one application needs to access the DDC without being aware of the presence of any other application. Further, it may be difficult to maintain a same level of performance and flexibility of the use of the DDC when there is only a single application.
Existing solutions are not independent of underlying platforms. Furthermore, existing solutions when sharing device input/output (I/O) buffers across many applications may result in access conflicts or deadlocks requiring specialized buffer management.
Moreover, simulating same/different virtual channel properties (VCPs) (for example, video properties, audio properties and system properties, such as resolution for video and sampling frequency for audio) to multiple application programs may be difficult using existing solutions. In addition, it may be difficult to achieve a reduced central processing unit (CPU) and memory utilization needs for the DDC management operation and any additions to processing latency when using existing solutions.
The architecture, systems and methods disclosed herein may be implemented in any means for achieving various aspects. Other features will be apparent from the accompanying drawings and from the detailed description that follow.